import java.lang.reflect.Array;
import java.util.Arrays;

public class Test {
    public static int find(int[] array,int val) {//在数组中返回指定数字的下标
        for (int i = 0;i < array.length;i++){
            if (array[i] == val){
                return i;
            }
        }
        return -1;//因为数组中下标不为负数
    }
    public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        int[] array2 = {1,2,3,4};
        System.out.println(array1 == array2);//会输出“false”，因为array1和2分别是两个不同的对象，虽然他们的地址里面装的东西是一样的
        System.out.println(Arrays.equals(array1,array2));//该指令比较两个数组中的内容，输出“true”
    }
    public static void main5(String[] args) {
        int[] array = {1,2,3,4};
        int[] copy = new int[array.length];
        System.arraycopy(array,1,copy,0,array.length-2);//从数组copy的0下标开始拷贝 以array的0下标为起始，数组长度为长度的内容
        System.out.println(Arrays.toString(copy));
    }
    public static void main4(String[] args) {//使用指令拷贝数组及扩容
        int[] array01 ={1,2,3,4,5};
        int[] array02 =Arrays.copyOf(array01,array01.length*2);
        array02[0] = 99;
        System.out.println(Arrays.toString(array01));
        System.out.println(Arrays.toString(array02));

    }
    public static String Method(int[] array) {//	 把数组转化为字符串（写一个方法代替“Arrays.toString(array)”）
        if (array==null){
            return "null";
        }
        String ret = "[";
        for (int i = 0;i < array.length;i++){
            if(i != array.length-1) {
                ret += array[i] + ",";
            }else
                ret += array[i];
        }
        ret = ret + "]";
        return ret;
    }

    public static void main3(String[] args) {
        int[] array = {1,2,3,4};
        int[] array2 = null;
        System.out.println(Method(array));
        System.out.println(Method(array2));
    }
    public static int[] grow02(int[] array) {//将一个数组中的元素扩大两倍且不改变原数组中的元素
        int[] array01 = new int[array.length];
        for (int i = 0;i < array.length;i++){
            array01[i] = array[i]*2;//将原数组中的元素扩大两倍后放在新数组中
        }
        return array01;
    }

    public static void main2(String[] args) {
        int array[] = {1,1,2,2,3};
        int[] array02= grow02(array);//存放着array01
        System.out.println(Arrays.toString(array02));
        System.out.println(Arrays.toString(array));
    }
    public static void grow2(int[] array) {//将一个数组中每个元素扩大两倍后输出（改变了原数组中的元素）
        for (int i = 0;i < array.length;i++){
            array[i] = array[i]*2;
        }
        String ret = Arrays.toString(array);//我使用了字符串来存放元素
        int[] ret1 = array;
//        String ret = Arrays.toString(array);//这里使用了新的数组来接受array的元素，如果没有使用新数组会怎么样呢？
        System.out.println(Arrays.toString(ret1));
        System.out.println(ret);
    }

    public static void main1(String[] args) {
        int[] array = {1,2,3,4,5};
        grow2(array);

/*//        System.out.println(Arrays.toString(array));//我猜想里面的元素会扩大两倍
        System.out.println(Arrays.toString(array));
        System.out.println("==========");
//        int[] array2; 局部变量使用前要赋值
        System.out.println(array);*/
    }
}
